package humanResource.staffManagement;

import entity.Staff;
import entity.StaffAccount;
import java.util.List;
import javax.ejb.Remote;

@Remote
public interface StaffAccountManagementSessionRemote {

    void activeStaffAccount(Long StaffAccountID);

    //return 0 is empty field
    //return long int staff ID is created successfully
    long addStaff(String firstName, String lastName, String email, String officeExtension, String personalContact, String departmentName);

    //return -1 if the staff alr has an account
    long addStaffAccount(Long staffID, String staffAccountName);

    void changePassword(Long StaffAccountID, String new_password);

    Character checkDomain(String username);

    boolean checkStaffAccountExist(String staffAccountName);

    boolean checkStaffExist(String firstName, String lastName);

    void deactiveStaffAccount(Long StaffAccountID);

    StaffAccount getStaffAccount(String staffAccountName);

    Long getStaffAccountIDfromStaffAccountName(String staffAccountName);

    Staff getStaffById(Long id);

    //List all staff in the system
    List<Staff> listAllStaff();

    List<StaffAccount> listAllStaffAccount();

    String resetPassword(String StaffAccountID, String email);

    Staff searchOneStaff(String user);

    //Search Staff
    List<Staff> searchStaff(Long staffID, String firstName, String lastName);

    void setContacts(Long StaffAccountID, List<String> contacts);

    void updatePersonalInfo(String userAccountName, String email, String firstName, String lastName, String officeExtension, String personalContact);

    void updateStaff(Long staffID, String email, String firstName, String lastName, String officeExtension, String personalContact);

    void updateStaff2(String user, String email, String firstName, String lastName, String officeExtension, String personalContact);
    
    void deleteStaff(Long id);
    
    void deleteStaffAccount(Long id);
}
